package com.ktgj.customer.service;

import java.util.List;

import com.ktgj.customer.domain.FinanceAutobillException;
import com.ktgj.customer.domain.FinanceAutobillRecord;
import com.ktgj.customer.domain.vo.BillDetailsVo;

import javax.servlet.http.HttpServletRequest;

/**
 * 财务自动对账文件记录Service接口
 * 
 * @author ruoyi
 * @date 2022-06-13
 */
public interface IFinanceAutobillRecordService 
{
    /**
     * 查询财务自动对账文件记录
     * 
     * @param billRecordId 财务自动对账文件记录ID
     * @return 财务自动对账文件记录
     */
    public FinanceAutobillRecord selectFinanceAutobillRecordById(Long billRecordId);

    /**
     * 查询财务自动对账文件记录列表
     * 
     * @param financeAutobillRecord 财务自动对账文件记录
     * @return 财务自动对账文件记录集合
     */
    public List<FinanceAutobillRecord> selectFinanceAutobillRecordList(FinanceAutobillRecord financeAutobillRecord);

    /**
     * 新增财务自动对账文件记录
     * 
     * @param financeAutobillRecord 财务自动对账文件记录
     * @return 结果
     */
    public int insertFinanceAutobillRecord(HttpServletRequest request, FinanceAutobillRecord financeAutobillRecord) throws Exception;

    /**
     * 修改财务自动对账文件记录
     * 
     * @param financeAutobillRecord 财务自动对账文件记录
     * @return 结果
     */
    public int updateFinanceAutobillRecord(FinanceAutobillRecord financeAutobillRecord);

    /**
     * 批量删除财务自动对账文件记录
     * 
     * @param billRecordIds 需要删除的财务自动对账文件记录ID
     * @return 结果
     */
    public int deleteFinanceAutobillRecordByIds(Long[] billRecordIds);

    /**
     * 删除财务自动对账文件记录信息
     * 
     * @param billRecordId 财务自动对账文件记录ID
     * @return 结果
     */
    public int deleteFinanceAutobillRecordById(Long billRecordId);

    /**
     * 原始账单查询
     * */
    public List<FinanceAutobillRecord> billingInquiry(FinanceAutobillRecord financeAutobillRecord);

    /**
     * 原始账单详细
     * */
    public List<BillDetailsVo> billDetails(Long id);

    /**
     * 对账
     * */
    public List<FinanceAutobillException> reconciliation(HttpServletRequest request, FinanceAutobillRecord financeAutobillRecord) throws Exception;
}
